<template>
  <div class="app-container">
    <el-form label-width="120px">
      <el-form-item label="信息描述">
        <el-tag type="info">excel模版说明</el-tag>
        <el-tag>
          <i class="el-icon-download"/>
          <a :href="defaultExcelTemplate">点击下载模版</a>
        </el-tag>

      </el-form-item>

      <el-form-item label="选择Excel">
        <el-upload
          ref="upload"
          :auto-upload="false"
          :on-exceed="fileUploadExceed"
          :on-success="fileUploadSuccess"
          :on-error="fileUploadError"
          :limit="1"
          :action="importUrl"
          name="file"
          accept="application/vnd.ms-excel">
          <el-button
            slot="trigger"
            size="small"
            type="primary">选取文件</el-button>
          <el-button
            :disabled="importBtnDisabled"
            style="margin-left: 10px;"
            size="small"
            type="success"
            @click="submitUpload()">导入</el-button>
        </el-upload>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data() {
    return {
      defaultExcelTemplate: 'https://sh0225-gulionlineyq.oss-cn-shanghai.aliyuncs.com/excel/2021/07-09/1625829896853_486c3539.xls',
      importUrl: 'http://127.0.0.1:8110/admin/edu/subject/import',
      importBtnDisabled: false
    }
  },
  methods: {
    fileUploadExceed() {
      this.$message.warning('一次只能上传一个文件')
    },
    fileUploadSuccess(r) { // 只要响应报文 状态码为200 进入此方法
      // 需要手动判断 响应的R对象的状态码
      console.log(r)
      if (!r.success) {
        this.$message.error(r.message)
      } else {
      // 清空文件列表
        this.$refs.upload.clearFiles()

        this.$message.success('上传成功')
      }
      // 上传成功后  设置按钮可以点击
      this.importBtnDisabled = false
    },
    fileUploadError(r) { // 响应报文状态码不为200时调用
      this.$message.error('上传失败')
      console.log(r)
    },
    // 导入按钮的单击事件： 点击时提交excel文件到后端
    submitUpload() {
      // 为了防止重复提交，禁用提交按钮
      this.importBtnDisabled = true
      // 获取上传组件对象：  vue对象可以通过 $refs 获取 自己渲染范围内  所有定义了 ref属性值的标签对象集合
      // $refs.ref值  就可以从refs集合中获取 ref值对应的标签对象
      this.$refs.upload.submit()
      // 调用上传方法上传数据
    }
  }
}
</script>
